package com.springboot.exception;

import lombok.extern.slf4j.Slf4j;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.method.HandlerMethod;

/**
 * @ControllerAdvice 使用它可以标识一个全局处理器/对象，它会被注入到spring容器中
 */
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    /**
     * 1.编写方法，处理指定异常，比如算数异常和空指定异常。可以指定多个异常
     * 2.这里要处理的异常由程序员来指定
     * @param e :表示异常发生后，传递的异常对象
     * @param model ：可以将我们的异常信息放入model，并传递给显示页面
     * @return
     */
    @ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class, AccessException.class})
    public String handlerAritException(Exception e, Model model, HandlerMethod handlerMethod) {
     log.info("异常信息={}",e.getMessage());
     model.addAttribute("msg",e.getMessage());
     log.info("返回异常发生的方法={}",handlerMethod.getMethod());
        return "/error/global";
    }
}
